from typing import List


class Solution:
    """
    方法：使用集合存储所有数字，然后遍历每个数字，如果当前数字是序列的起点（即不存在前一个数字），则向后查找连续序列

    Args:
        nums: List[int] - 输入的整数数组

    Returns:
        int - 最长连续序列的长度

    Time: O(n) - 每个数字最多被访问两次
    Space: O(n) - 使用集合存储所有数字
    """
    def longestConsecutive(self, nums: List[int]) -> int:
        ans = 0
        st = set(nums)
        for x in st:
            if x - 1 in st:
                continue
            # x 是序列的起点
            y = x + 1
            while y in st:
                y += 1
            ans = max(ans, y - x)
        return ans